package net.csdn.business.facade;


import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.csdn.business.common.domain.request.migrate.MigrateInfoLogDto;
import net.csdn.business.common.domain.request.migrate.MigrateLogRequestDto;
import net.csdn.business.common.domain.vo.migrate.MigrateInfoLogVo;
import net.csdn.business.enums.MigrateEnum;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

@Slf4j
@RequiredArgsConstructor
@Component
public class MigrateFacade {

   /* private final MigrateInfoClient migrateInfoClient;
    private final ProjectFeignClient projectFeignClient;*/



    /*public ProjectVo getProjectDetailByPath(String reposityPath){
        return projectFeignClient.getProjectDetailByPath(reposityPath);
    }*/

    public int update(MigrateInfoLogVo migrateInfoLogVo){
        MigrateInfoLogDto migrateInfoLogDto = new MigrateInfoLogDto();
        BeanUtils.copyProperties(migrateInfoLogVo,migrateInfoLogDto);
        //migrateInfoClient.update(migrateInfoLogDto);
        return 1;
    }


    //获取管理员ID

    public MigrateInfoLogVo save(MigrateInfoLogVo migrateInfoLogVo){
        MigrateInfoLogDto migrateInfoLogDto = new MigrateInfoLogDto();
        BeanUtils.copyProperties(migrateInfoLogVo,migrateInfoLogDto);
        //migrateInfoClient.save(migrateInfoLogDto);
        return new MigrateInfoLogVo();
    }

    public MigrateInfoLogVo queryLog(Integer type, String originId, String groupPath, String repoId){
        //MigrateInfoLogVo vo = migrateInfoClient.detail(type, originId, groupPath, repoId);
        MigrateInfoLogVo vo =null;
        if(ObjectUtils.isEmpty(vo)){
            MigrateInfoLogVo migrateInfoLogVo = new MigrateInfoLogVo();
            migrateInfoLogVo.setType(type);
            migrateInfoLogVo.setStatus(MigrateEnum.Status.FAIL.code);
            migrateInfoLogVo.setOriginId(originId);
            migrateInfoLogVo.setOriginGroupPath(groupPath);
            migrateInfoLogVo.setOriginRepoId(repoId);
            vo  = migrateInfoLogVo;
        }
        return vo;
    }

    public List<MigrateInfoLogVo> queryLogs(Integer type, List<String> originIds,String groupPath, String repoId){
        MigrateLogRequestDto migrateLogRequestDto = MigrateLogRequestDto.builder().
                type(type).
                originIds(originIds).
                groupPath(groupPath).
                repoId(repoId).build();
        //List<MigrateInfoLogVo> list = migrateInfoClient.list(migrateLogRequestDto);
        List<MigrateInfoLogVo> list =new ArrayList<>();
        return list.stream().filter(i->{return Objects.equals(i.getStatus(), MigrateEnum.Status.SUCCESS.code);}).collect(Collectors.toList());
    }

    }


